home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue29 / web / FCHAINED.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-08-20  |  3.1 KB  |  84 lines

  1. unit fchained;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, HTTPApp;
  7.  
  8. type
  9.   TWebModule1 = class(TWebModule)
  10.     procedure HandleAction1(Sender: TObject;
  11.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  12.     procedure HandleAction3(Sender: TObject;
  13.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  14.     procedure HandleAction2(Sender: TObject;
  15.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  16.     procedure WebModule1BeforeDispatch(Sender: TObject;
  17.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  18.     procedure WebModule1AfterDispatch(Sender: TObject;
  19.       Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  20.   private
  21.     { Private declarations }
  22.   public
  23.     { Public declarations }
  24.   end;
  25.  
  26. var
  27.   WebModule1: TWebModule1;
  28.  
  29. implementation
  30.  
  31. {$R *.DFM}
  32.  
  33. procedure TWebModule1.HandleAction1(Sender: TObject;
  34.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  35. begin
  36.   // if Sender is the Default WebDispatcher action item ...
  37.   if (Sender as TWebActionItem).Default then
  38.     Response.Content := Response.Content +
  39.       '<LI>' + (Sender as TWebActionItem).Name + ' (default handler)</LI>'
  40.   else
  41.     Response.Content := Response.Content +
  42.       '<LI>' + (Sender as TWebActionItem).Name + '</LI>';
  43.   Handled := (Sender as TWebActionItem).Name = 'WebActionItem3';
  44.   // to activate the default handling uncomment the following line
  45.   //Handled := (Sender as TWebActionItem).Default;
  46. end;
  47.  
  48. procedure TWebModule1.HandleAction2(Sender: TObject;
  49.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  50. begin
  51.   Response.Content := Response.Content +
  52.     '<LI>' + (Sender as TWebActionItem).Name + '</LI>';
  53.   // try experimenting with different values of Sender.Name to see
  54.   // how many of the chained event handlers get to handle the Request
  55.   Handled := (Sender as TWebActionItem).Name = 'WebActionItem5';
  56. end;
  57.  
  58. procedure TWebModule1.HandleAction3(Sender: TObject;
  59.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  60. begin
  61.   Response.Content := Response.Content +
  62.     '<LI>' + (Sender as TWebActionItem).Name + '</LI>';
  63.   Handled := (Sender as TWebActionItem).Name = 'WebActionItem9';
  64. end;
  65.  
  66. procedure TWebModule1.WebModule1BeforeDispatch(Sender: TObject;
  67.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  68. begin
  69.   Response.Content := '<HTML><HEAD><TITLE>Chained Action Items Demo' +
  70.     '</TITLE></HEAD><BODY><H2>Web dispatcher is ' +
  71.     (Sender As TWebModule).Name + '</H2><HR>Action items triggered were<UL>';
  72.   //Handled := True;       // setting this to True and sending the response
  73.   //Response.SendResponse; // ends the application here
  74. end;
  75.  
  76. procedure TWebModule1.WebModule1AfterDispatch(Sender: TObject;
  77.   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  78. begin
  79.   Response.Content := Response.Content + '</UL><HR></BODY></HTML>';
  80.   Handled := True; // setting this to False will cause no response to be sent
  81. end;
  82.  
  83. end.
  84.